package com.test.resumeanalysis.ui.home

import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import com.setruth.mvvmbaseproject.network.ApiResponse
import com.setruth.mvvmbaseproject.network.api.JobInfoApi
import com.setruth.mvvmbaseproject.util.LogUtil
import com.test.resumeanalysis.R
import com.test.resumeanalysis.common.BaseVBFragment
import com.test.resumeanalysis.data.model.JobInfo
import com.test.resumeanalysis.data.model.JobPost
import com.test.resumeanalysis.databinding.FragmentHomeBinding
import com.test.resumeanalysis.viewModel.PublicViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext


class HomeFragment : BaseVBFragment<FragmentHomeBinding>(FragmentHomeBinding::inflate) {

    //注意这里是 activityViewModels 就代表这个viewmodel是整个activity的所有组件共享
    private val model: PublicViewModel by activityViewModels()
    lateinit var adapter:HomeAdapter
    lateinit var jobList:ArrayList<JobInfo>
    override fun initView() {
        super.initView()
        setHasOptionsMenu(true)
        setupToolbar(binding.homeToolbar, false)
        binding.homeToolbar.title = "职位"

        adapter = HomeAdapter()
        jobList = ArrayList()
        adapter.data = jobList


        binding.homeRv.adapter = adapter
        val layoutManager = LinearLayoutManager(activity)
        binding.homeRv.layoutManager = layoutManager

        val list= ArrayList<JobPost>()



        val job2 = JobPost("平面设计师","1.负责公司公众号的维护和内容推送；\n" +
                "2.短视频相关内容的文案脚本策划，视频制作及编辑。并结合公司宣传计划，不断优化视频内容；\n" +
                "3.协助其他平面设计、视频编辑等内容。","1.大专及以上学历，1-2年相关工作经验；\n" +
                "2.熟悉平面设计软件及视频剪辑等，设计感好；\n" +
                "3.工作责任心强，沟通及理解能力强。"
        ,     "6K-8k"
        )
        val job3 = JobPost("财务","1.全面负责财务部的日常管理工作；\n" +
                "2.组织制定财务方面的管理制度及有关规定，并监督执行；\n" +
                "3.向公司提供各项财务报告和必要的财务分析；\n" +
                "4.监控可能会对公司造成经济损失的重大经济合同；\n" +
                "5.有独立处理账务和税务的能力者优先；\n" +
                "6.有全盘账务处理，税务工作，年度汇算清缴能力者优先；\n" +
                "7.公司资质和合同的归档保管工作；\n" +
                "8.完成上级领导交代的其他日常工作任务。",
            "1.本科及以上学历；\n" +
                    "2.通晓财会专业知识，熟悉国家有关财务、会计、税收政策和实务；\n" +
                    "3.有互联网行业相关经验优先；\n" +
                    "4.原则性强，沟通能力佳，有良好的团队协作意识。",
            "10K-20k"
            )
        val job4 = JobPost("市场营销","1.根据公司发展方向及阶段性目标，制定品牌战略、推广策略等年度经营方案；\n" +
                "2.参与各产品推广筹划方案的制定与执行；\n" +
                "3.负责企业整体形象的定位与维护，建立完整的产品口碑营销方案及公司形象推广方案；\n" +
                "4.负责与新媒体及知名媒体进行沟通，开展长期良好合作；\n" +
                "5.负责制作与推广公司各类宣传资料，完善对外各类宣传通稿；\n" +
                "6.负责为公司的知识产权、荣誉资质等进行申请、维护与宣传。",
            "1.熟练使用办公软件，可以独立制作表格、PPT等；\n" +
                    "2.良好的沟通能力，善于维护客户关系；\n" +
                    "3.有拓展、策划经验能力者优先考虑。\n" +
                    "4.本科以上\n" +
                    "5.10年以上相关工作经验",
            "15K-30k"
        )



        list.add(job2)
        list.add(job3)
        list.add(job4)

//        adapter.data = list


        adapter.setOnItemClickListener(object : HomeAdapter.OnItemClickListener {
            override fun onItemClick(position: Int) {
                model.selectPost(jobList[position])
                findNavController().navigate(R.id.postInfoFragment)
            }
        })
        initWeb()
    }


    fun initWeb() {
//        model.apply {
//            request(TestAPI::class.java).login("1466709762@qq.com","asd234453695").getResponse {
//                it.collect{
//                    when(it){
//                        is ApiResponse.Error -> LogUtil.e("${it.errMsg} ${it.exception}")
//                        ApiResponse.Loading -> LogUtil.e("Loading")
//                        is ApiResponse.Success -> {
//                            LogUtil.e(it.data.toString())
//                        }
//                    }
//                }
//            }
//        }

//        val jsona = jsona()
//
//        val jsonObject = JsonObject().apply {
//            addProperty("file_name", jsona.name)
//            addProperty("resume_base",jsona.base64)
//        }



//        model.apply {
//            request(ResumeParseApi::class.java).Parse(json =jsonObject).getResponse {
//                it.collect{
//                         when(it){
//                        is ApiResponse.Error -> LogUtil.e("${it.errMsg} ${it.exception}")
//                        ApiResponse.Loading -> LogUtil.e("Loading")
//                        is ApiResponse.Success -> {
//                            LogUtil.e(it.data.toString())
//                        }
//                    }
//                }
//            }
//        }

        model.apply {
            request(JobInfoApi::class.java).getAllJob().getResponse {
                it.collect{
                    when(it){
                        is ApiResponse.Error -> LogUtil.e("${it.errMsg} ${it.exception}")
                        ApiResponse.Loading -> LogUtil.e("Loading")
                        is ApiResponse.Success -> {
                            LogUtil.e(it.data.toString())
                            it.data?.data?.let { it1 -> jobList.addAll(it1) }
                            withContext(Dispatchers.Main){
                                adapter.notifyDataSetChanged()
                            }
                        }
                    }
                }
            }
        }

    }





}